
package SintaticoPacote;

import compilador_full.TabelaSimbolos;

/**
 *
 * @author Beto
 */
public class Fator {

    public static boolean fator(TabelaSimbolos tabelaSimbolos) {

        System.out.println("fator : " + tabelaSimbolos.getLookahead());
        System.out.println(tabelaSimbolos.superTipo(1));

        if(tabelaSimbolos.getTipo().equals("numero")) {
            if (tabelaSimbolos.reconhecer(tabelaSimbolos.getLookahead()))
                return true;
            else return false;
        }
        
        else if(tabelaSimbolos.getLookahead().equals("(")) {
            if(tabelaSimbolos.reconhecer("("))
                if(ExpressaoAritmetica.expAritmetica(tabelaSimbolos))
                    if(tabelaSimbolos.reconhecer(")"))
                        return true;
                    else return false;
                else return false;
            else return false;
        }

        else if(tabelaSimbolos.getTipo().equals("identificador")) {
            if(tabelaSimbolos.superLookahead(1).equals("("))
                if (new chamadaDeFuncao(tabelaSimbolos).chamaFuncao())
                    return true;
                else return false;
            
            else {
                System.out.println("fator : " + tabelaSimbolos.getLookahead());
                if (tabelaSimbolos.reconhecer(tabelaSimbolos.getLookahead()))
                    return true;
                else return false;
            }
        }
        else return false;
        
    }
}
